
from iImageShape import ImageShape
from pygame.sprite import Sprite
import os,pygame

class Alien(Sprite):
    '''外星人'''
    def __init__(self,screen,rootUrl,setObj,speedX:float=0.5,speedY:float=0.1):        
        super().__init__()
        imgUrl = os.path.join(rootUrl,"images","alien.bmp")
        self.screen = screen #传入舞台对象
        self.imgUrl = imgUrl
        self.setObj = setObj
        #加载图片资源
        self.image = pygame.image.load(self.imgUrl)
        self.rect = self.image.get_rect()       
        self.screen_rect = screen.get_rect()

        self.speedX = speedX
        self.speedY = speedY
        self.dir = 1
        self.rect.x = self.rect.width
        self.rect.y = self.rect.height
        self.x = float(self.rect.x)
        self.y = float(self.rect.y)

    def blitme(self): #绘制显示图片
        '''在指定的位置绘制图片'''
        self.screen.blit(self.image,self.rect) # 第一个参数 要绘制的图片 第二个参数是图片的位置
    def update(self):                  
        flag = self.setDir()
        self.x += self.dir*(self.speedX+self.setObj.alien_speed_add)        
        self.rect.x = self.x
        flag = True
        if flag:
            self.y += self.speedY
            self.rect.y = self.y

    def is_out_edge(self):
        return self.rect.bottom>=self.screen_rect.bottom

    def setDir(self):
        """根据位置设置位移的方向,并返回一个bool表示是否改变方向"""
        if self.rect.left <= 0:
            self.dir = 1
            return True
        elif self.rect.right >= self.screen_rect.right:
            self.dir = -1
            return True
        return False